<?php
namespace qgauth\datascope;
use common\models\base\BaseModel;
use Yii;
use yii\behaviors\TimestampBehavior;

/**
 * 数据权限表的模型
 */
class RoleDataScope extends BaseModel
{
    /**
     * 数据名称
     * @var
     */
    public static $name;

    /**
     * 标识符
     * @var
     */
    public static $flag;

    /**
     * 数据源
     * @var
     */
    public static $data_table;

    /**
     * 依据字段
     * @var
     */
    public static $data_field;

    /**
     * {@inheritdoc}
     */
    public static function tableName(): string
    {
        return '{{%role_data_scope}}';
    }

    /**
     * {@inheritdoc}
     */
    public function rules(): array
    {
        return [
            [['role_id', 'role_id', 'name', 'flag', 'scope', 'data_table', 'data_field'], 'required'],
            [['role_id', 'role_id', 'scope', 'create_user_id', 'update_user_id', 'created_at', 'updated_at'], 'integer'],
            [['name', 'flag', 'data_table', 'data_field'], 'string', 'max' => 64],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels(): array
    {
        return [
            'id' => 'ID',
            'role_id' => '角色 ID',
            'name' => '数据名称',
            'flag' => '标识符',
            'scope' => '权限范围',
            'data_table' => '数据源',
            'data_field' => '依据字段',
            'create_user_id' => '创建人id',
            'update_user_id' => '更新人id',
            'created_at' => '创建时间',
            'updated_at' => '更新时间',
            'is_delete' => '是否删除 0 = 正常, 1 = 删除',
        ];
    }

    public function behaviors(){
        return [
            [
                'class'=>TimestampBehavior::class,
            ]
        ];
    }

    /**
     * 验证前
     * @return bool
     */
    public function beforeValidate()
    {
        //基类返回为true 的时候才执行
        if(parent::beforeValidate()){

            //如果为新插入数据
            if($this->isNewRecord){
                //记录公司id
                if(property_exists(Yii::$app->controller, '_user')){
                    $this->company_id = Yii::$app->controller->_user->company_id;
                }
            }
            return true;
        }
    }

    public function beforeDelete()
    {
        //权限必须硬删除。防止后面有bug
        if(parent::beforeDelete())
            return true;
    }
}


